﻿using System;
using System.Runtime.Serialization;
using System.Diagnostics.CodeAnalysis;

namespace JTLeigh.Commerce.Spencer.Features.ProductFeedback.Service.Contracts.Runtime.GetProductFeedback
{

	/// <summary>
	/// Data contract representing a product review image for a single product by a single 
    /// customer.
	/// </summary>
	[DataContract(Name = "ProductReviewImage", Namespace = "http://schemas.jtleigh.com/Commerce/Spencer/Features/ProductFeedback/1.0/Runtime/GetProductFeedback/")]
	public class ProductReviewImage
	{

		#region Properties

		/// <summary>
		/// Gets or sets the image identifier.
		/// </summary>
		/// <value>An image identifier <see cref="Guid"/>.</value>
		[DataMember(Name = "ImageId", IsRequired = true)]
		public Guid ImageId { get; set; }

        /// <summary>
        /// Gets or sets the caption of the image.
        /// </summary>
        [DataMember(Name = "Caption", IsRequired = false)]
        public string Caption { get; set; }

        /// <summary>
        /// Gets or sets the path to the thumbnail.
        /// </summary>
        /// <remarks>
        /// <para>
        /// All paths returned from services must be relative and should be mapped to 
        /// channel-specific relative or absolute paths in each channel.
        /// </para>
        /// </remarks>
        [DataMember(Name = "ThumbnailPath", IsRequired = true)]
        public string ThumbnailPath { get; set; }

        /// <summary>
        /// Gets or sets the width of the thumbnail.
        /// </summary>
        /// <value>An <see cref="Int16"/> pixel width.</value>
        [DataMember(Name = "ThumbnailWidth", IsRequired = true)]
        public short ThumbnailWidth { get; set; }

        /// <summary>
        /// Gets or sets the height of the thumbnail.
        /// </summary>
        /// <value>An <see cref="Int16"/> pixel height.</value>
        [DataMember(Name = "ThumbnailHeight", IsRequired = true)]
        public short ThumbnailHeight { get; set; }

        /// <summary>
        /// Gets or sets the path to the image.
        /// </summary>
        /// <remarks>
        /// <para>
        /// All paths returned from services must be relative and should be mapped to 
        /// channel-specific relative or absolute paths in each channel.
        /// </para>
        /// </remarks>
        [DataMember(Name = "ImagePath", IsRequired = true)]
        public string ImagePath { get; set; }

        /// <summary>
        /// Gets or sets the width of the image.
        /// </summary>
        /// <value>An <see cref="Int16"/> pixel width.</value>
        [DataMember(Name = "ImageWidth", IsRequired = true)]
        public short ImageWidth { get; set; }

        /// <summary>
        /// Gets or sets the height of the image.
        /// </summary>
        /// <value>An <see cref="Int16"/> pixel height.</value>
        [DataMember(Name = "ImageHeight", IsRequired = true)]
        public short ImageHeight { get; set; }

        #endregion // Properties

	}

}
